home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / misc_pto / bc7stub / stubscan.bas < prev    next >
BASIC Source File  |  1990-03-14  |  6KB  |  177 lines

  1.  
  2.    'STUBSCAN.BAS   03-14-90  T.E.M.  Scan .BAS for stub file conflicts.
  3.    '--------------------------------------------------------------------
  4.     ON ERROR GOTO E.Handler
  5.  
  6.     False% = 0: True% = -1
  7.  
  8.     NOFLTIN& = -1  ' Init as true...can be used.
  9.     NOEDIT& = -1
  10.     NOCOM& = -1
  11.     NOLPT& = -1
  12.     SMALLERR& = -1
  13.    '--------------------------------------------------------------------
  14.  
  15.     COLOR 15, 0: CLS
  16.     PRINT STRING$(50, 196)
  17.     PRINT STRING$(2, 196);
  18.     PRINT " STUBSCAN parses .BAS for stub file conflicts ";
  19.     PRINT STRING$(2, 196)
  20.     PRINT STRING$(50, 196)
  21.    '------------------------------------------------------------------
  22.  
  23.    DIM PROPELLER$(4)
  24.    PROPELLER$(1) = "|": PROPELLER$(2) = "/"
  25.    PROPELLER$(3) = CHR$(196): PROPELLER$(4) = "\"
  26.    IPROP% = 1: OPROP% = 1  ' Pointer to action propeller characters
  27.   '------------------------------------------------------------------
  28.  
  29.    IROW% = CSRLIN
  30.    INPUT "Enter  INPUT <.BAS> path\filename:   ", IFILE$
  31.    PRINT STRING$(50, 196)
  32.    IF IFILE$ = "" THEN GOTO PgmExit
  33.    IFILE$ = UCASE$(IFILE$)
  34.    Temp% = INSTR(IFILE$, ".")
  35.    IF Temp% = 0 THEN IFILE$ = IFILE$ + ".BAS"
  36.    '-------------------------------------------------------------------
  37.  
  38. 100  CLOSE 1: OPEN IFILE$ FOR INPUT AS #1
  39. 200  CLOSE 2: OPEN "STUBSCAN.RPT" FOR OUTPUT AS #2
  40. 201  PRINT #2, " "
  41.      PRINT #2, IFILE$; " BASIC source file as of ";
  42.      PRINT #2, DATE$; " at "; LEFT$(TIME$, 5); " o`clock."
  43.      PRINT #2, " "
  44.      PRINT #2, "Line  --Stub--   Source statement which may conflict..."
  45.      PRINT #2, "----  --------   --------------------------------------"
  46.    '-------------------------------------------------------------------
  47.   
  48.   WHILE NOT EOF(1)
  49.      IF NOT EOF(1) THEN LINE INPUT #1, R$
  50.      ICOUNT& = ICOUNT& + 1
  51.      R$ = LTRIM$(R$)                             ' Trim leading spaces
  52.      RLEN% = LEN(R$)
  53.        IF RLEN% < 2 THEN GOTO NextRecord
  54.      R$ = UCASE$(R$)                             ' Toupper
  55.      Temp$ = LEFT$(R$, 1)
  56.      IF Temp$ = "'" THEN GOTO NextRecord
  57.      Temp$ = LEFT$(R$, 3)
  58.      IF Temp$ = "REM'" THEN GOTO NextRecord
  59.  
  60.      IPROP% = IPROP% + 1: IF IPROP% > 4 THEN IPROP% = 1
  61.      LOCATE IROW%, 36: PRINT PROPELLER$(IPROP%);  ' Action propeller
  62.  
  63.         Temp% = INSTR(R$, "FOR INPUT ")  ' This one is OK
  64.           IF Temp% <> 0 THEN GOTO EndInput
  65.         Temp% = INSTR(R$, "INPUT ")
  66.           IF Temp% = 0 THEN GOTO EndInput
  67.           NOFLTIN& = False%:  Conflict$ = "  NOFLTIN  "
  68.           GOSUB F.WriteReptLine
  69.           NOEDIT& = False%:  Conflict$ = "  NOEDIT   "
  70.           GOSUB F.WriteReptLine
  71. EndInput:
  72.  
  73.         Temp% = INSTR(R$, "VAL(")
  74.           IF Temp% <> 0 THEN
  75.              NOFLTIN& = False%:  Conflict$ = "  NOFLTIN  "
  76.              GOSUB F.WriteReptLine
  77.           END IF
  78.         Temp% = INSTR(R$, "READ ")
  79.           IF Temp% <> 0 THEN
  80.              NOFLTIN& = False%:  Conflict$ = "  NOFLTIN  "
  81.              GOSUB F.WriteReptLine
  82.           END IF
  83.  
  84.         Temp% = INSTR(R$, "LPT1: ")
  85.         Temp2% = INSTR(R$, "LPRINT")
  86.           IF (Temp% <> 0) OR (Temp2% <> 0) THEN
  87.              NOLPT& = False%:  Conflict$ = "  NOLPT    "
  88.              GOSUB F.WriteReptLine
  89.           END IF
  90.  
  91.         Temp% = INSTR(R$, "COM1:")
  92.         Temp2& = INSTR(R$, "COM2:")
  93.           IF (Temp% <> 0) OR (Temp2& <> 0) THEN
  94.              NOCOM& = False%:  Conflict$ = "  NOCOM    "
  95.              GOSUB F.WriteReptLine
  96.           END IF
  97.  
  98.  
  99. NextRecord:
  100.   WEND
  101.  
  102.   PRINT
  103.   PRINT STRING$(50, 196)
  104.   PRINT "BASIC source file lines in.....: "; ICOUNT&
  105.   PRINT "Conflict report is in file.....:  STUBSCAN.RPT"
  106.  
  107.   PRINT STRING$(50, 196)
  108.  
  109.   IF NOFLTIN& THEN PRINT "NOFLTIN   can be used."
  110.   IF NOEDIT& THEN PRINT "NOEDIT    can be used."
  111.   IF NOCOM& THEN PRINT "NOCOM     can be used."
  112.   IF NOLPT& THEN PRINT "NOLPT     can be used."
  113.   IF SMALLERR& THEN PRINT "SMALLERR  can be used."
  114.   PRINT STRING$(50, 196)
  115.  
  116.   Stub$ = ""
  117.   IF NOFLTIN& THEN Stub$ = Stub$ + "+NOFLTIN"
  118.   IF NOEDIT& THEN Stub$ = Stub$ + "+NOEDIT"
  119.   IF NOCOM& THEN Stub$ = Stub$ + "+NOCOM"
  120.   IF NOLPT& THEN Stub$ = Stub$ + "+NOLPT"
  121.   IF SMALLERR& THEN Stub$ = Stub$ + "+SMALLERR"
  122.   IF Stub$ = "" THEN GOTO EndStubBat  ' No bat file since no stubs
  123.  
  124.  ' Get the bare file name to build the .OBJ filename in STUB.BAT...
  125.   IFILE$ = UCASE$(IFILE$)
  126.   Temp% = INSTR(IFILE$, ".")
  127.   IF Temp% <> 0 THEN
  128.      IFILE$ = LEFT$(IFILE$, (Temp% - 1))  ' Trim any filetype
  129.   END IF
  130.   TLEN% = LEN(IFILE$)
  131.   Chop% = 0
  132.   FOR Temp% = 1 TO TLEN%  ' Look for rightmost "\" or ":" to chop leading
  133.       C$ = MID$(IFILE$, Temp%, 1)
  134.       IF (C$ = "\") OR (C$ = ":") THEN Chop% = Temp%
  135.   NEXT Temp%
  136.   IF Chop% <> 0 THEN IFILE$ = RIGHT$(IFILE$, (TLEN% - Chop%))
  137.  '-----------------------------------------------------------
  138.  
  139.   CLOSE 1: OPEN "STUB.BAT" FOR OUTPUT AS #1
  140.   PRINT #1, "  @Echo OFF"
  141.   PRINT #1, "  Rem STUB.BAT for "; IFILE$; ".OBJ screened by STUBSCAN.EXE"
  142.   PRINT #1, "  LINK /NOE "; IFILE$; ".OBJ";
  143.   PRINT #1, Stub$; ";"
  144.   CLOSE 1
  145.   PRINT "STUB.BAT will link stubs with "; IFILE$; ".OBJ."
  146. EndStubBat:
  147.   PRINT STRING$(50, 196)
  148.   PRINT "NOTE:"
  149.   PRINT "Review STUBSCAN.RPT report file.  It may"
  150.   PRINT "be possible to use additional stub files."
  151.   PRINT STRING$(50, 196)
  152.  '
  153.   GOTO PgmExit
  154.  '------------
  155.  
  156. F.WriteReptLine:
  157. 300 PRINT #2, USING "####"; ICOUNT&;
  158.     PRINT #2, Conflict$; "  "; R$
  159. 301 RETURN
  160.    '------
  161.  
  162. E.Handler:
  163.   IF ERL = 100 THEN
  164.      PRINT IFILE$; " not found or error OPENing it.  Halting."
  165.      GOTO PgmExit
  166.   END IF
  167.   IF (ERL = 200) OR (ERL = 300) THEN
  168.      PRINT "Error handling STUBSCAN.RPT output file.  Halting."
  169.      GOTO PgmExit
  170.   END IF
  171.   PRINT "Untrapped error "; ERR; " in STUBSCAN.EXE.  Sorry."
  172. PgmExit:
  173.   CLOSE
  174.   SYSTEM
  175.  '------
  176.  
  177.